#ifndef GS_KEYVALUEPAIR_H
#define GS_KEYVALUEPAIR_H

namespace Gs
{
	// Represents a key/value pair.
	template<class K, class V>
	class KeyValuePair
	{
	public:
		// Stores the key.
		K key;

		// Stores the value.
		V value;
		
		// Initialises a new instance of the KeyValuePair class.
		KeyValuePair()
			: key(), value()
		{
		}

		// Initialises a new instance of the KeyValuePair class.
		KeyValuePair(const K &k, const V &v)
			: key(k), value(v)
		{
		}
		
		// Initialises a new instance of the KeyValuePair class.
		KeyValuePair(const KeyValuePair &kv)
			: KeyValuePair(kv.key, kv.value)
		{
		}

		// Assigns a copy of the key value pair.
		KeyValuePair &operator =(const KeyValuePair &kv)
		{
			key = kv.key;
			value = kv.value;
			return *this;
		}
	};
}

#endif